package com.sywl.ytcx.controller.front;

import com.sywl.ytcx.entity.res.ResponseResult;
import com.sywl.ytcx.entity.user.User;
import com.sywl.ytcx.service.CommunityActivityService;
import com.sywl.ytcx.service.UserService;

import com.sywl.ytcx.util.VerTokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.Map;


@Controller("userFrontController")
@CrossOrigin
@RequestMapping("/api/user")
public class UserController {

    @Autowired
    private CommunityActivityService communityActivityService;

    @Autowired
    private UserService userService;
    // 模拟用户存储


    /**
     * 注册接口，接收用户的用户名和密码进行注册
     *
     * @param user 包含用户名和密码(密码暂不加密)
     * @return 注册结果信息
     */
    @PostMapping(value = "/register", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseResult register(@RequestBody User user) {
        return userService.registerUser(user);
    }


    /**
     * 登录接口，接收用户的用户名和密码进行登录验证
     *
     * @param account  用户名
     * @param password 密码
     * @return 登录结果信息
     * 登录使用的是param参数
     */
    @PostMapping(value = "/login", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseResult login(String account, String password) {
        ResponseResult responseResult = userService.loginUser(account, password);
        communityActivityService.recordLogin(account);
        return responseResult;
    }

    /**
     * 修改用户状态接口
     *
     * @param status 用户状态
     * @return 修改的用户信息
     * 登录使用的是param参数
     * @RequestHeader authorization 用于获取用户ID
     */
    @PostMapping(value = "/updateUserStatus", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseResult updateUserStatus(
            @RequestHeader("authorization") String authorization,
            int status) {
        String status_ = "";
        /*
         * 'active','banned','deleted'，对应码
         *    可用1        封号0      删除2
         * */
        switch (status) {
            case 1:
                status_ = "active";
                break;
            case 0:
                status_ = "banned";
                break;
            case 2:
                status_ = "deleted";
                break;
        }
        return userService.updateUserStatus(authorization, status_);
    }

//    /**
//     * 修改用户状态接口
//     * @param token 用于获取用户ID
//     * @return 用户信息
//     * 登录使用的是param参数
//     */
//    @PostMapping(value = "/getUserById", produces = "application/json;charset=UTF-8")
//    @ResponseBody
//    public ResponseResult getUserById(String token) {
//        return userService.getUserById(token);
//    }

    /**
     * 修改用户状态接口
     *
     * @param token 用于获取用户ID
     * @return 用户信息
     * 登录使用的是param参数
     */
    @PostMapping(value = "/getUserById", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public ResponseResult updateAvatarUrl(String token, @RequestParam("file") MultipartFile file) {
        return userService.updateAvatarUrl(token, file);
    }





}